The present disclosure relates to content management systems, and more specifically, to maintaining consistency between a transactional database and a non-transactional data repository content repository in a content management system (e.g., during document persistence).
Content management systems store metadata related to content (e.g., title, document author, file type, status (e.g., checked out to a particular user, read-only, etc.), version information, customized information, etc.) in a transactional database system and the actual content in a non-transactional data repository (e.g., a network drive). A content management system allows for document persistence. That is, users may add new content to the content management system and, under certain conditions, change existing content (e.g., add or remove data). In adding new content to a content management system or modifying existing content stored in a content management system, the content management system generally adds and/or modifies metadata associated with the new or modified content to the transactional database.
Transaction management is typically performed for the transactional database system; however, transaction management may not monitor the non-transactional data repository. Because transaction management may not operate across both a transactional database system and a non-transactional data repository, the content management system typically maintains consistency between metadata (stored in the transactional database) and stored in the non-transactional data repository). When the content management system fails to persist metadata associated with content (e.g., a document object) to the transactional database (i.e., commits a database transaction for storing the metadata) or fails to persist content to the non-transactional data repository (i.e., writes the content to the non-transactional data repository and synchronizes the content to the content repository), an inconsistency is generated in the content management system. For example, if meta-data is persisted to the transactional database, but the associated content is not persisted to the non-transactional data repository, the content management system may associate a meta-data entry with non-existent content. Similarly, if content is persisted to the non-transactional data repository but the associated metadata is not persisted to the transaction database, the content may not be accessible through the content management system. In either case, inconsistencies between the transactional database and the non-transactional data repository may result in wasted resources (e.g., database entries not associated with content or inaccessible content).
Typically, a content management system may accept some level of inconsistency between the transactional database and the non-transactional data repository or perform computationally expensive operations to maintain consistency within the content management system. If the content management system is configured to accept some level of inconsistency, content not associated with metadata in the content management system may remain in the non-transactional data repository, which wastes storage space and may be problematic, for example, in litigation. If a content management system is configured to maintain consistency, the content management system can perform document persistence in multiple phases involving writing content to a temporary location or use resource and transaction managers and transaction logging to manage content.
As a result, content management systems may not be resource efficient. This may result in increased costs for implementing and maintaining content management systems due to increased storage requirements, increased processing capability requirements, and so on.